package com.ssy.wireless.mapper;

import com.ssy.wireless.entity.ApDevice;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface ApDeviceMapper {

    int deleteByPrimaryKey(Long id);

    int insert(ApDevice record);

    ApDevice selectByPrimaryKey(Long id);

    int updateByPrimaryKey(ApDevice record);

    List<ApDevice> select(@Param("params") Map<String, Object> params);

    /**
     * 根据AP索引查询设备信息
     *
     * @param apIndex AP索引
     * @return
     */
    ApDevice selectByApIndex(@Param("apIndex") String apIndex);

    /**
     * 修改设备数量(当有用户认证时，则认为是增加一个接入设备数)
     *
     * @param apDeviceId AP设备编号
     * @param hotspotId  热点编号
     * @return
     */
    int updateDeviceCount(@Param("apDeviceId") long apDeviceId, @Param("hotspotId") long hotspotId);

    /**
     * 修改设备产生的上下行流量信息
     *
     * @param upTraffic   上行流量
     * @param downTraffic 下行流量
     * @param apDeviceId  AP设备编号
     * @param hotspotId   热点编号
     * @return
     */
    int updateTraffic(@Param("upTraffic") double upTraffic, @Param("downTraffic") double downTraffic, @Param("apDeviceId") long apDeviceId, @Param("hotspotId") long hotspotId);

    /**
     * 修改设备运行状态
     *
     * @param runStatus  运行状态
     * @param apDeviceId AP设备编号
     * @param hotspotId  热点编号
     * @return
     */
    int updateRunStatus(@Param("runStatus") int runStatus, @Param("apDeviceId") long apDeviceId, @Param("hotspotId") long hotspotId);

    /**
     * 获取在线设备数
     *
     * @return
     */
    int selectOnlineCount(@Param("entId") Long entId, @Param("hotspotType") Integer hotspotType, @Param("hotspotId") Long hotspotId);

    List<String> selectApIndexsByApDeviceIds(@Param("apDeviceIds") long[] apDeviceIds);
}